函数组件与类组件的差别：
没有组件实例
没有生命周期
没有state和setState,只能接收props

class组件的问题
1.大组件很难拆分和重构，很难测试
2.相同业务逻辑，分散到各个方法中，逻辑混乱
3.复用逻辑变得复杂


函数组件是一个纯函数，执行完即销毁，无法存储state
useEffect可以模拟生命周期，useEffect的第二个参数是一个数组，数组中的变量发生变化，useEffect就会执行
如果useEffect不传值就模拟DidMount和DidUpdate
useEffect(()=>{

})
如果useEffect传空数组就模拟DidMount
useEffect(()=>{

},[])

//传入对应的值就类似于vue中watch的使用

useEffect(()=>{
  
},[对应的state值])

// useEffect的返回值是一个函数模拟器，类似于vue中的beforeDestroy
useEffect(()=>{
    return ()=>{
        console.log('组件销毁前执行')
    }
})

// 模拟willUnMount的注意事项
props发生变化，及更新也会执行结束监听准确滴说：返回的函数，会在下次effect执行之前被执行

useContext(); 直接获取其中存储的值，而不需要父子组件之间慢慢传递
// 创建context
const theme = {
    color:'red'
    
}
const MyContext = React.createContext(theme);

